Computer graphics workstations can provide highly detailed graphics simulations for a variety of applications. Engineers and designers working in the computer aided design (CAD) and computer aided manufacturing (CAM) areas typically utilize graphics simulations for a variety of computational tasks. The computer graphics workstation industry has thus been driven to provide more powerful computer graphics workstations which can perform graphics simulations quickly and with increased detail.
Modern workstations having graphics capabilities generally utilize "window" systems to organize graphics manipulations. As the industry has been driven to provide faster and more detailed graphics capabilities, computer workstation engineers have tried to design high performance, multiple window systems which maintain a high degree of user interactivity with the graphics workstation.
A primary function of window systems in such graphics systems is to provide the user with simultaneous access to multiple processes on the workstation. Each of these processes provides an interface to the user through its own area onto the workstation display. The overall result for the user is an increase in productivity since the user can then manage more than one task at a time with multiple windows displaying multiple processes on the workstation.
In graphics systems, some scheme must be implemented to "render" or draw graphics primitives to the system's screen. "Graphics primitives" are a basic component of a graphics picture, such as a polygon or vector. All graphics pictures are formed with combinations of these graphics primitives. Many schemes may be utilized to perform graphics primitives rendering.
The graphics rendering procedure generally takes place within a piece of graphics rendering hardware called a "frame buffer." A frame buffer generally comprises a plurality of video random access memory (VRAM) computer chips which store information concerning pixel activation on the system's display screen corresponding to the particular graphics primitives which will be traced out on the screen. The frame buffer contains all of the pixel activation data and stores this information until the graphics system is prepared to trace the information on the workstation's screen. The frame buffer is generally dynamic and maintains pixel data for periodic monitor refreshing.
Thus, computer graphics systems convert image representations stored in the computer's memory to image representations which are easily understood by humans. The image representations are typically displayed on a cathode ray tube (CRT) device that is divided into arrays of pixel elements which can be stimulated to emit a range of colored light. The particular color of light that a pixel emits is called its "value." Display devices such as CRTs typically stimulate pixels sequentially in some regular order, such as left to right and top to bottom, and repeat the sequence 50 to 70 times a second to keep the screen refreshed. Thus, some mechanism is required to retain a pixel's value between the times that this value is used to stimulate the display. The frame buffer is typically used to provide this "refresh" function.
Typical CRT devices for use with graphics workstations are "raster scan" display devices. Typical raster scan display devices generate images which are a multiplicity of parallel, non-overlapping bands of pixels comprising sets of parallel lines. An example of such a system is disclosed in U.S. Pat. No. 4,695,772 to Lau et al wherein the raster scan device is organized as an array of tiles.
Raster scan devices generally utilize a multiplicity of beams for the red, green and blue (RGB) channels in the CRT. The multiplicity of beams generally write from the left side of the display CRT to the right side of the display CRT. For the purposes of dividing the CRT into tiles (a process called "tiling"), each tile is considered to comprise a height or resolution equal to the multiplicity of scan lines, with each tile being a particular number of pixels wide. The resulting graphics primitive image thus comprises a multiplicity of parallel, non-overlapping sets of parallel lines of pixels generated by a separate sweep of electron beams across the CRT screen. The tiles are generally rectangular, and organize the image into arrays having a plurality of rows by a set number of columnar tiles as described in U.S. Pat. No. 4,695,772, to Lau et al., col. 4, lines 12-17.
All CRT monitors are non-linear in brightness. This means that doubling the voltage applied by the CRT monitor will not double the brightness of the associated pixel. However, graphics workstations usually require linear responses from the monitors to comply with pixel intensity assumptions made by rendering algorithms in software. Thus, a conversion circuit has been included in most modern graphics workstations to provide linear responses on the graphics monitors. This conversion circuit is called a "gamma" correction circuit. The gamma correction circuit is designed to satisfy the following equation: EQU V=I
where V is the voltage applied to the monitor, I is the desired intensity, and .degree. is a constant which depends on the monitor type.
In some prior graphics workstations, gamma correction is accomplished with a read-only memory (ROM) table which is located immediately before the frame buffer. The ROM table contains gamma correction values for the particular intensity desired and voltage applied. However, in modern workstations requiring compositing and complex texture mapping of pixels, a simple ROM look-up table to gamma correct a monitor before the frame buffer does not allow compositing which is generally denoted as the combination of new pixel value data with pixel value data already present in the frame buffer. Since compositing operations like antialiasing and texturing require linear values, gamma correction must be done before these operations are performed on pixels to be rendered to the frame buffer in order to maximize the effective number of colors contained in the pixel value data. This highly desirable result has not heretofore been achieved in the computer workstation art and there is a long-felt need in the computer workstation art for fast gamma functions to perform gamma correction before pixel value data is stored on the frame buffer. Furthermore, present ROM gamma correction tables are slow and require many computer work cycles to complete gamma correction.
In many other prior art graphic workstations, gamma correction is accomplished with a random access memory (RAM) color look up table for pixel brightness. The disadvantages of this method and apparatus is that RAM color look up tables do not allow for data compression. Also, since the color look up table is used for the gamma function, not only is it required, but it cannot be used for other things. The present invention does not require a color look up table and thus allows the color look up table to be eliminated or to be used for other purposes.
There is therefore a long-felt need in the art for a graphics frame buffer system which provides gamma correction of pixel value data before the frame buffer in order to accommodate all of the complex graphics primitives manipulations available to a graphics workstation. Furthermore, there is a long-felt need in the art for graphics frame buffer systems which have linear monitor responses. The aforementioned long-felt needs have not heretofore been solved in the computer graphics art.